$(function () {
    let shippingStatus = getQueryString("shippingStatus");
    let payStatus = getQueryString("payStatus");
    let orderStatus = getQueryString("orderStatus");
    let orderType = getQueryString("orderType");
    let url = '../order/list';
    if (shippingStatus) {
        url += '?shippingStatus=' + shippingStatus;
    }
    if (payStatus) {
        url += '?payStatus=' + payStatus;
    }
    if (orderStatus) {
        url += '?orderStatus=' + orderStatus;
    }
    if (orderType) {
        url += '?orderType=' + orderType;
    }
    $("#jqGrid").jqGrid({
        url: url,
        datatype: "json",
        colModel: [
            {label: 'id', name: 'id', index: 'id', key: true, hidden: true},
            {label: '订单号', name: 'orderSn', index: 'order_sn', width: 150, align: 'center'},
            {label: '用户昵称', name: 'userEntity.nickname', width: 80, align: 'center'},
            // {
            //     label: '订单类型', name: 'orderType', index: 'order_type', width: 80, align: 'center', formatter: function (value) {
            //     if (value == '1') {
            //         return '普通订单';
            //     } else if (value == '2') {
            //         return '团购订单';
            //     } else if (value == '3') {
            //         return '砍价订单';
            //     }
            //     return '-';
            // }
            // },
            {
                label: '订单状态',
                name: 'orderStatus',
                index: 'order_status',
                width: 80,
                align: 'center',
                formatter: function (value) {
                    if (value === 0) {
                        return '待付款';
                    } else if (value === 101) {
                        return '订单已取消';
                    } else if (value === 102) {
                        return '订单已删除';
                    } else if (value === 201) {
                        return '订单已付款';
                    } else if (value === 300) {
                        return '订单已发货';
                    } else if (value === 301) {
                        return '用户已收货';
                    } else if (value === 302) {
                        return '用户已评论';
                    } else if (value === 401) {
                        return '退款中';
                    } else if (value === 402) {
                        return '退款退货中';
                    } else if (value === 403) {
                        return '退款成功';
                    } else if (value === 404) {
                        return '退款失败';
                    }
                    return value;
                }
            },
            {
                label: '付款状态', name: 'payStatus', index: 'pay_status', width: 80, align: 'center',
                formatter: function (value) {
                    if (value === 0) {
                        return '未付款';
                    } else if (value === 1) {
                        return '付款中';
                    } else if (value === 2) {
                        return '已付款';
                    } else if (value === 4) {
                        return '退款';
                    }
                    return value;
                }
            },
            {
                label: '发货状态',
                name: 'shippingStatus',
                index: 'shipping_status',
                width: 60, align: 'center',
                formatter: function (value) {
                    if (value === 0) {
                        return '待发货';
                    } else if (value === 1) {
                        return '已发货';
                    } else if (value === 2) {
                        return '已收货';
                    } else if (value === 4) {
                        return '退货';
                    }
                    return value;
                }
            },
            // {label: '收货人', name: 'consignee', index: 'consignee', width: 80},
            // {label: '省', name: 'province', index: 'province', width: 20 },
            // {label: '地市', name: 'city', index: 'city', width: 20 },
            // {label: '区县', name: 'district', index: 'district', width: 20 },
            // {label: '收货地址', name: 'address', index: 'address', width: 80},
            // {label: '联系电话', name: 'mobile', index: 'mobile', width: 80},
            // {label: '补充说明', name: 'postscript', index: 'postscript', width: 80 },
            // {label: '快递公司Id', name: 'shippingId', index: 'shipping_id', width: 80 },
            // {label: '快递公司', name: 'shippingName', index: 'shipping_name', align: 'center', width: 80},
            // {label: '快递单号', name: 'shippingNo', index: 'shipping_No', align: 'center', width: 80},
            // {label: '付款方', name: 'payName', index: 'pay_name', width: 80},
            // {label: '快递费用', name: 'shippingFee', index: 'shipping_fee', width: 80},
            // {label: '', name: 'integral', index: 'integral', width: 80 },
            // {label: '', name: 'integralMoney', index: 'integral_money', width: 80 },
            {label: '订单总价', name: 'orderPrice', index: 'order_price', align: 'center', width: 60},
            {label: '实际支付金额', name: 'actualPrice', index: 'actual_price', align: 'center', width: 80},
            {
                label: '是否需要开票', name: 'isBilling', index: 'is_billing', width: 80, align: 'center',
                formatter: function (value) {
                    if (value === 0) {
                        return '<span class="label label-danger">否</span>';
                    } else if (value === 1) {
                        return '<span class="label label-info">是</span>';
                    }
                    return value;
                }
            },
            {
                label: '下单时间', name: 'addTime', index: 'add_time', width: 100, align: 'center',
                formatter: function (value) {
                    return transDate(value);
                }
            },
            {label: '买家备注', name: 'postscript', index: 'postscript', align: 'center', width: 60},
            {label: '卖家备注', name: 'remark', index: 'remark', align: 'center', width: 60},
            {
                label: '订单操作', width: 80, align: 'center', sortable: false, formatter: function (value, col, row) {
                    let sendGoods = (row.orderStatus === 201 || row.orderStatus === 300) ? '<span class="label label-warning" onclick="vm.sendGoods(' + row.id + ')">填写快递单号</span><br>' : '';
                    let confirm = row.orderStatus === 300 ? '<span class="label label-danger" onclick="vm.confirm(' + row.id + ')">确认收货</span><br>' : '';
                    return sendGoods + confirm === '' ? "暂无操作" : sendGoods + confirm;
                }
            },
            {
                label: '其他操作', width: 80, align: 'center', sortable: false, formatter: function (value, col, row) {
                    let detail = '<span class="label label-info"   onclick="vm.lookDetail(' + row.id + ')">查看详情</span><br>';
                    let print = '<span class="label label-primary" onclick="vm.printDetail(' + row.id + ')">订单打印</span><br>';
                    let showInvoice = row.isBilling === 1 ? '<span class="label label-success" onclick="vm.showInvoice(' + row.id + ')">发票信息</span><br>' : '';
                    let showShippingDetail = (row.shippingStatus === 1 || row.shippingStatus === 2) ? '<span class="label label-warning" onclick="vm.showShippingDetail(' + row.id + ')">查看物流</span><br>' : '';
                    let showComment = row.orderStatus === 302 ? '<span class="label label-primary" onclick="vm.showComment(' + row.id + ')">查看评论</span><br>' : '';

                    return detail + print + showInvoice + showShippingDetail + showComment;
                }
            }
        ],
        viewrecords: true,
        height: 495,
        rowNum: 10,
        rowList: [10, 30, 50],
        rownumbers: true,
        rownumWidth: 25,
        autowidth: true,
        multiselect: true,
        pager: "#jqGridPager",
        jsonReader: {
            root: "page.list",
            page: "page.currPage",
            total: "page.totalPage",
            records: "page.totalCount"
        },
        prmNames: {
            page: "page",
            rows: "limit",
            order: "order"
        },
        gridComplete: function () {
            $("#jqGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "hidden"});
        }
    });
});

let vm = new Vue({
    el: '#rrapp',
    data: {
        showList: true,
        detail: false,
        title: null,
        order: {
            shippingId: 56
        },
        shippings: [],
        q: {
            orderSn: null,
            orderStatus: null,
            payStatus: null,
            shippingStatus: null,
            consignee: null,
            shippingNo: null,
            addTime: null
        },
        modalInvoice: false,
        modalDetail: false,
        modalShipping: false,
        modalComment: false,
        modalKuaidi: false,
        orderTraces: [],
        ruleValidate: {
            shippingId: [
                {required: true, message: '快递公司不能为空', trigger: 'change', type: 'number'}
            ],
            shippingNo: [
                {required: true, message: '快递单号不能为空', trigger: 'blur', type: 'number'}
            ]
        },
        commentList: [],
        options2: {
            shortcuts: [
                {
                    text: '最近一周',
                    value() {
                        const end = new Date();
                        const start = new Date();
                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
                        return [start, end];
                    }
                },
                {
                    text: '近一个月',
                    value() {
                        const end = new Date();
                        const start = new Date();
                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
                        return [start, end];
                    }
                },
                {
                    text: '近三个月',
                    value() {
                        const end = new Date();
                        const start = new Date();
                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
                        return [start, end];
                    }
                }
            ]
        }
    },
    methods: {
        query: function () {
            vm.reload();
        },
        confirm: function (event) {
            let id = getSelectedRow();
            if (id == null) {
                return;
            }
            confirm('确定收货？', function () {
                $.ajax({
                    type: "POST",
                    url: "../order/confirm",
                    contentType: "application/json",
                    data: JSON.stringify(id),
                    success: function (r) {
                        if (r.code === 0) {
                            alert('操作成功', function (index) {
                                $("#jqGrid").trigger("reloadGrid");
                            });
                        } else {
                            alert(r.msg);
                        }
                    }
                });
            });
        },
        saveOrUpdate: function (event) {
            vm.order.addTime = '';
            $.ajax({
                type: "POST",
                url: '../order/sendGoods',
                contentType: "application/json;charset=utf-8",
                data: JSON.stringify(vm.order),
                success: function (r) {
                    if (r.code === 0) {
                        alert('操作成功', function (index) {
                            vm.reload();
                        });
                    } else {
                        alert(r.msg);
                    }
                }
            });
        },
        reload: function (event) {
            vm.showList = true;
            vm.detail = false;
            let date1 = null;
            if (vm.q.addTime[0] != null && vm.q.addTime[0] != '') {
                let addTime1 = new Date(vm.q.addTime[0]).toJSON();
                date1 = new Date(+new Date(addTime1) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '');
            }

            let date2 = null;
            if (vm.q.addTime[1] != null && vm.q.addTime[1] != '') {
                let addTime2 = new Date(vm.q.addTime[1]).toJSON();
                date2 = new Date(+new Date(addTime2) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '');
            }

            let page = $("#jqGrid").jqGrid('getGridParam', 'page');
            $("#jqGrid").jqGrid('setGridParam', {
                postData: {
                    'orderSn': vm.q.orderSn,
                    'orderStatus': vm.q.orderStatus,
                    'payStatus': vm.q.payStatus,
                    'shippingStatus': vm.q.shippingStatus,
                    'consignee': vm.q.consignee,
                    'shippingNo': vm.q.shippingNo,
                    'addTime1': date1,
                    'addTime2': date2,
                },
                page: page
            }).trigger("reloadGrid");
        },
        lookDetail: function (rowId) { //第三步：定义编辑操作
            event.stopPropagation();
            // vm.detail = true;
            vm.title = "详情";
            $.get("../order/info/" + rowId, function (r) {
                vm.order = r.order;
            });
            vm.modalDetail = true;
        },
        printDetail: function (rowId) {
            event.stopPropagation();
            openWindow({
                type: 2,
                title: '<i class="fa fa-print"></i>打印票据',
                content: '../shop/orderPrint.html?orderId=' + rowId
            })
        },
        showInvoice: function (rowId) {
            event.stopPropagation();
            $.get("../order/info/" + rowId, function (r) {
                vm.order = r.order;
            });
            vm.modalInvoice = true;
        },
        showShippingDetail: function (rowId) {
            event.stopPropagation();
            vm.modalShipping = true;
            vm.getOrderTraces(rowId);
        },
        showComment: function (rowId) {
            let id = rowId;
            if (id == null) {
                return;
            }
            event.stopPropagation();
            $.get("../order/info/" + id, function (r) {
                vm.order = r.order;
            });
            $.get("../ordercomment/queryAll?orderId=" + id, function (r) {
                vm.commentList = r.list;
            });
            vm.modalComment = true;
        },
        sendGoods: function (rowId) {
            let id = rowId;
            if (id == null) {
                return;
            }
            event.stopPropagation();
            $.get("../order/info/" + id, function (r) {
                vm.order = r.order;
            });
            vm.modalKuaidi = true;
        },
        getOrderTraces: function (rowId) {
            let id = rowId;
            if (id == null) {
                return;
            }
            $.get("../order/getOrderTraces?id=" + id, function (r) {
                vm.orderTraces = r.data;
            });
        },
        exportExcel: function () {
            let ids = getSelectedRows();
            if (ids == null) {
                return;
            }
            this.$Notice.success({
                desc: '请稍等片刻，文件正在生成中...'
            });
            exportFile('#rrapp', '../order/export', {'ids': ids});
        },
        orderUpdate: function (event) {
            // vm.order.addTime = '';
            // var dateee = new Date(vm.order.addTime).toJSON();
            // var date = new Date(+new Date(dateee)+8*3600*1000).toISOString().replace(/T/g,' ').replace(/\.[\d]{3}Z/,'')
            // console.log("时间2==="+date);
            $.ajax({
                type: "POST",
                url: '../order/update',
                contentType: "application/json;charset=utf-8",
                data: JSON.stringify(vm.order),
                success: function (r) {
                    if (r.code === 0) {
                        alert('操作成功', function (index) {
                            vm.reload();
                        });
                    } else {
                        alert(r.msg);
                    }
                }
            });
        },
    },
    created: function () {
        let vue = this;
        $.get("../shipping/queryAll", function (r) {
            vue.shippings = r.list;
        });
    }
});